package com.nutricia.core.service.convertor;

import com.nutricia.common.dal.persistant.CmsSystemMenu;
import com.nutricia.common.dal.persistant.SubSystemMenu;
import com.nutricia.core.model.domain.CmsSystemMenuDO;
import com.nutricia.core.model.domain.SubSystemMenuDO;
import org.apache.commons.collections.CollectionUtils;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/**
 * 系统菜单转换器
 *
 * @author: huangsheng
 * @date: 2017/10/20
 */
public class SystemMenuServiceConvertor {


    /**
     * 将 cmsSystemMenus 转换为 cmsSystemMenuDOS
     *
     * @author: huangsheng
     * @date: 2017/10/20 下午2:00
     */
    public static List<CmsSystemMenuDO> convertToCmsSystemMenuDOs(List<CmsSystemMenu> cmsSystemMenus) {
        if (CollectionUtils.isNotEmpty(cmsSystemMenus)) {
            List<CmsSystemMenuDO> cmsSystemMenuDOS = new ArrayList<>(cmsSystemMenus.size());

            cmsSystemMenus.forEach(cmsSystemMenu -> {
                CmsSystemMenuDO cmsSystemMenuDO = new CmsSystemMenuDO();
                cmsSystemMenuDO.setId(cmsSystemMenu.getId());
                cmsSystemMenuDO.setMenuPicCode(cmsSystemMenu.getMenuPicCode());
                cmsSystemMenuDO.setMenuName(cmsSystemMenu.getMenuName());
                cmsSystemMenuDO.setMenuUrl(cmsSystemMenu.getMenuUrl());
                cmsSystemMenuDO.setMenuComponent(cmsSystemMenu.getMenuComponent());
                // 二级菜单便利
                cmsSystemMenuDO.setSubSystemMenuDOS(SystemMenuServiceConvertor.convertToSystemMenuDOs(cmsSystemMenu.getMenus()));
                cmsSystemMenuDOS.add(cmsSystemMenuDO);
            });
            return cmsSystemMenuDOS;
        }
        return Collections.emptyList();
    }

    /**
     * 将SystemMenu 转换为 SystemMenuDO
     *
     * @author: huangsheng
     * @date: 2017/10/23 下午1:39
     */
    protected static SubSystemMenuDO convertToSubSystemMenu(SubSystemMenu subSystemMenu) {
        if (null == subSystemMenu) {
            return null;
        }
        SubSystemMenuDO subSystemMenuDO = new SubSystemMenuDO();
        subSystemMenuDO.setId(subSystemMenu.getId());
        subSystemMenuDO.setMenuName(subSystemMenu.getMenuName());
        subSystemMenuDO.setMenuUrl(subSystemMenu.getMenuUrl());
        subSystemMenuDO.setMenuComponent(subSystemMenu.getMenuComponent());
        return subSystemMenuDO;
    }

    /**
     * systemMenus 转换为 systemMenuDOS
     *
     * @author: huangsheng
     * @date: 2017/10/20 下午2:00
     */
    protected static List<SubSystemMenuDO> convertToSystemMenuDOs(List<SubSystemMenu> subSystemMenus) {
        List<SubSystemMenuDO> subSystemMenuDOS = new ArrayList<>();
        if (CollectionUtils.isNotEmpty(subSystemMenus)) {
            subSystemMenus.forEach(subSystemMenu -> {
                subSystemMenuDOS.add(SystemMenuServiceConvertor.convertToSubSystemMenu(subSystemMenu));
            });
            return subSystemMenuDOS;
        }
        return Collections.emptyList();
    }


}
